﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace Qas.CommonLogic
{
    /// <summary>
    /// Лог, сохраняющий информацию о работе логики системы в отдельный файл
    /// </summary>
    public static class LogicalLog
    {
        
        public const string deserialization_message = "Десериализация объекта класса";

        /// <summary>
        /// Путь к файлу лога
        /// </summary>
        private const string logFileName = "logic.log";

        /// <summary>
        /// Внутренний объект, пишущий в поток
        /// </summary>
        private static StreamWriter sw = null;

        /// <summary>
        /// Номер текущего сообщения
        /// </summary>
        private static int msgNumber = 0;

        static LogicalLog()
        {
            sw = File.CreateText(LogicalLog.logFileName);
            if (sw == null)
            {
                throw new NullReferenceException("Не удалось создать файл для логического лога");
            }
        }

        /// <summary>
        /// Запись сообщения в лог
        /// </summary>
        /// <param name="message">Сообщение, которое записывается в лог</param>
        public static void Write(string message)
        {
            string stringToWrite = string.Empty;

            if (string.IsNullOrEmpty(message))
            {
                stringToWrite = "Получено пустое или null сообщение";
            }

            // Формируем сообщение для лога
            stringToWrite = string.Format("\t{0}\t{1}", ++msgNumber, message);

            // Пишем в лог
            sw.WriteLine(stringToWrite);
        }
    }
}
